#include <REGX52.H>
#include "DS18B20.h"
#include "Nixie.h"
#include "Delay.h"

void main() {
	int temp, tmp;
	
	// 初始化温度，防止第一次读到错误值
	DS18B20_ConvertT();
	Delay(1000);
	
	while (1) {
		DS18B20_ConvertT();
		temp = DS18B20_ReadTemp();
		
		// 负号判断
		if (temp < 0) {
			temp = -temp;
			Nixie(1, 10);
		} else 
			Nixie(1, 11);
		
		tmp = temp >> 4;
		
		// 整数-个位 带小数点
		NixieWithDot(4, tmp % 10);

		tmp /= 10;
		
		// 整数-十位
		Nixie(3, tmp % 10);
		
		tmp /= 10;
		
		// 整数-百位
		Nixie(2, tmp);
		
		// 0.5 0.25 0.125 0.0625 => 5000 2500 1250 625
		tmp = (temp & 0x000F) * 625;
		
		Nixie(8, tmp % 10);
		tmp /= 10;
		Nixie(7, tmp % 10);
		tmp /= 10;
		Nixie(6, tmp % 10);
		tmp /= 10;
		Nixie(5, tmp);
	}
}